if _G.RequireLuas ~= nil then
	for _,v in ipairs(_G.RequireLuas) do
		require(v);
	end
end
require("Util");

minDis = 0.1;		--怪物与目标的最小距离，当小于该距离时认为已经与目标接触
minDisP = minDis * minDis;
chaseDis = 16;			--怪物与目标的可追捕距离，当小于该距离时怪物会追捕目标

monster = {};
function Start()					--脚本开始时被调用的方法

end

function Update()					--固定时间调用一次
	while true do
		if _G.action ~= nil then						--玩家有移动行为，重新计算怪物跟随目标		
			role = {x = _G.action[2], y = _G.action[3]};
			for _,v in ipairs(mon) do
				local roletov = getlenp(role, v);
				if roletov < chaseDis and roletov > minDis then
					v.target = {x = role.x, y = role.y}
					local s=search(v);
					local t=search(role);
					v.line = line["L"..s.."_"..t];
					v.index=1;
					v.movetarget = point[v.line[v.index]];
					-- coroutine.yield("s:"..s.." t:"..t.."  start"..v.line[1]);
				end
			end
			_G.action=nil;
		end
		r = {};
		for i,v in ipairs(mon) do
			if v.target ~= nil then                         --对有最终移动目标的怪物进行移动
				currentL = getlenp(v, v.movetarget);		--计算当前位置与移动目标的距离的平方
				if currentL < minDisP then                     --完成当前移动操作
					if v.line == nil then                      --到达最终目标点
						v.x = v.target.x;
						v.y = v.target.y;
						v.target = nil;
						v.movetarget = nil;
					elseif table.getn(v.line) == v.index then  --已走完寻路集合内的所有点
						v.movetarget = v.target;
						v.line = nil;
					else                                       --寻路集合内的点还没走完，需要将当前移动目标修改为下一个移动点
						v.index = v.index + 1;
						v.movetarget = point[v.line[v.index]];
					end
				end
				xscale, yscale = normalize(v, v.movetarget);
				v.x = v.x + xscale * v.speed;
				v.y = v.y + yscale * v.speed;
			end
			table.insert(r, {i - 1, v.x, v.y});
		end
		coroutine.yield(r);
	end
end

function Destory()
end

local function searchMon(args)
	r = {};
	for i,v in ipairs(args) do
		
	end
end

-- if _G.RequireLuas ~= nil then
-- 	for _,v in ipairs(_G.RequireLuas) do
-- 		require(v);
-- 	end
-- end
-- require("Util");

-- minDis = 0.1;		--怪物与目标的最小距离，当小于该距离时认为已经与目标接触
-- minDisP = minDis * minDis;
-- chaseDis = 16;			--怪物与目标的可追捕距离，当小于该距离时怪物会追捕目标

-- function Start()					--脚本开始时被调用的方法
-- 	return 0;
-- end

-- function Update()					--固定时间调用一次
-- 	while true do
-- 		if _G.action ~= nil then						--玩家有移动行为，重新计算怪物跟随目标		
-- 			role = {x = _G.action[2], y = _G.action[3]};
-- 			for _,v in ipairs(mon) do
-- 				local roletov = getlenp(role, v);
-- 				if roletov < chaseDis and roletov > minDis then
-- 					v.target = {x = role.x, y = role.y}
-- 					local s=search(v);
-- 					local t=search(role);
-- 					v.line = line["L"..s.."_"..t];
-- 					v.index=1;
-- 					v.movetarget = point[v.line[v.index]];
-- 					-- coroutine.yield("s:"..s.." t:"..t.."  start"..v.line[1]);
-- 				end
-- 			end
-- 			_G.action=nil;
-- 		end
-- 		r = {};
-- 		for i,v in ipairs(mon) do
-- 			if v.target ~= nil then                         --对有最终移动目标的怪物进行移动
-- 				currentL = getlenp(v, v.movetarget);		--计算当前位置与移动目标的距离的平方
-- 				if currentL < minDisP then                     --完成当前移动操作
-- 					if v.line == nil then                      --到达最终目标点
-- 						v.x = v.target.x;
-- 						v.y = v.target.y;
-- 						v.target = nil;
-- 						v.movetarget = nil;
-- 					elseif table.getn(v.line) == v.index then  --已走完寻路集合内的所有点
-- 						v.movetarget = v.target;
-- 						v.line = nil;
-- 					else                                       --寻路集合内的点还没走完，需要将当前移动目标修改为下一个移动点
-- 						v.index = v.index + 1;
-- 						v.movetarget = point[v.line[v.index]];
-- 					end
-- 				end
-- 				xscale, yscale = normalize(v, v.movetarget);
-- 				v.x = v.x + xscale * v.speed;
-- 				v.y = v.y + yscale * v.speed;
-- 			end
-- 			table.insert(r, {i - 1, v.x, v.y});
-- 		end
-- 		-- coroutine.yield(r[1][2].."~~~"..r[1][3]);
-- 		coroutine.yield(r);
-- 	end
-- end


-- function Destory()
-- end
